package cn.sw.common.database.domain.vo.tree;

import cn.sw.common.database.domain.entity.Menu;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
* Menu 表单
* @author 张众森 (个人博客:https://)
* @date 2025-05-09
* @tags 做一个优秀的全栈架构
*/

@Data
@NoArgsConstructor
public class MenuTreeVo implements Serializable {

    private String id;

    /**
    * 父菜单ID（根节点为0）
    */
    private String parentId;
    /**
    * 菜单名称
    */
    private String name;
    /**
    * 路由路径
    */
    private String url;
    /**
    * 类型 (0-目录 1-菜单 2-按钮)
    */
    private Byte type;
    /**
    * 图标
    */
    private String icon;
    /**
    * 排序
    */
    private Integer sort;
    /**
    * 权限标识（如 sys:user:list）
    */
    private String perms;
    /**
     * 组件名称
     */
    private String componentName;

    // 创建时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    // 更新时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    private List<Menu> children = new ArrayList<>();



}